package com.zeus.common.enums;

import lombok.Getter;

/**
 * 宙斯报警模式枚举
 *
 * @author f1ybear_wang  2022/2/7 6:14 下午
 */
public enum ZeusAlarmModelEnum {
    /**
     * 标准报警，发现错误立即报出。若不设置，则默认为该模式
     */
    NORMAL("NORMAL", "标准报警", "标准报警，发现错误立即报出"),
    /**
     * 阈值报警-次数为主，根据配置的每分钟(某段时间)达到多少阈值进行报警。
     */
    THRESHOLD_COUNT("THRESHOLD_COUNT", "阈值报警", "阈值报警，根据配置的每分钟(某段时间)达到多少阈值进行报警"),
    /**
     * 阈值报警-时间为主，根据配置的每分钟(某段时间)达到多少阈值进行报警。
     */
    THRESHOLD_TIME("THRESHOLD_TIME", "阈值报警", "阈值报警，根据配置的每分钟(某段时间)达到多少阈值进行报警");

    /**
     * 编码
     */
    @Getter
    private final String code;

    /**
     * 名称
     */
    @Getter
    private final String name;

    /**
     * 描述
     */
    @Getter
    private final String desc;

    /**
     * 构造方法
     *
     * @param code 编码
     * @param name 名称
     * @param desc 描述
     * @author f1ybear_wang  2022/2/7 6:18 下午
     */
    ZeusAlarmModelEnum(String code, String name, String desc) {
        this.code = code;
        this.name = name;
        this.desc = desc;
    }

    /**
     * 根据编码获取枚举
     *
     * @param code 编码
     * @return ZeusAlarmModelEnum
     * @author f1ybear_wang  2022/2/7 6:18 下午
     */
    public static ZeusAlarmModelEnum parse(String code) {
        if (code == null || code.isEmpty()) {
            return null;
        }
        for (ZeusAlarmModelEnum value : ZeusAlarmModelEnum.values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return null;
    }

}
